// const path = require("path");
// const pool = require("../pool.js");
// const utils = require("../utils/index.js");
// const utilsServer = require("../utils/serverInfo.js");
// const moment = require("moment-timezone");
// const multer = require("multer");
// const AdmZip = require("adm-zip");
// const AppInfoParser = require("app-info-parser");
// const plist = require("plist");
// const fs = require("fs");
// const { readManifest } = require("node-aab-parser");
// const msgUtils = require("../utils/feishu.js");
// const crypto = require("crypto");
// const CryptoJS = require("crypto-js");
// const FormData = require("form-data");
// const { exec } = require("child_process");
// const config = require("../config");
// const axios = require("axios");
// const jwt = require("jsonwebtoken");
// const jwksClient = require('jwks-rsa');
// const WebSocket = require('ws');
// const http = require('http');
// const express = require('express');
// const router = express.Router();
// const app = express();
// const server = http.createServer(app);
// const wss = new WebSocket.Server({ server });

// // 心跳配置
// const HEARTBEAT_INTERVAL = 10000; // 25秒发送一次ping
// const PONG_TIMEOUT = 30000; // 30秒未响应pong则断开


// // 连接映射：{ [uuid]: WebSocket }
// const connections = new Map();

// wss.on('connection', async (ws, req) => {
//     const params = new URL(req.url, 'ws://45.76.212.42').searchParams;
//     const pk = params.get('pk');
//     const uuid = params.get('uuid');
//     console.log(`新连接请求 pk=${pk} uuid=${uuid}`);

//     try {
//         // 自动注册用户，并根据 pk 进行验证
//         const user = await verifyOrCreateUser(uuid, pk);
//         if (!user) {
//             ws.close();
//             return;
//         }
//         console.log(`用户 ${uuid} 已连接`);
//         connections.set(uuid, ws);

//         // 定义一个超时定时器，用于检测客户端 pong 回复
//         let pongTimeout = null;
//         const schedulePongTimeout = () => {
//             clearTimeout(pongTimeout);
//             pongTimeout = setTimeout(() => {
//                 console.log(`用户 ${uuid} 心跳响应超时，终止连接`);
//                 ws.terminate();
//                 connections.delete(uuid);
//             }, PONG_TIMEOUT);
//         };

//         // 初始开启超时检测
//         schedulePongTimeout();

//         // 定时发送 ping 消息，并重置 pong 检测定时器
//         const heartbeatInterval = setInterval(() => {
//             if (ws.readyState === WebSocket.OPEN) {
//                 console.log(`服务端发送 ping 给用户 ${uuid}`);
//                 ws.send("ping");
//                 schedulePongTimeout();
//             }
//         }, HEARTBEAT_INTERVAL);

//         // 消息处理：包括检测 pong 和其他业务消息
//         ws.on('message', async (message) => {
//             const content = message.toString().trim();
//             console.log(content, 'message-来自',uuid)

//             // 如果收到 pong 消息，则重置超时检测
//             if (content.toLowerCase() === "pong") {
//                 console.log(`收到用户 ${uuid} 的 pong 响应`);
//                 schedulePongTimeout();
//                 return;
//             }
//             // content: {
//             //     message_type: '',//消息类型   //ping  pong   text(文字消息) video(视频消息)
//             //     sender_id:'',//发送者id
//             //     receiver_id:'',//接收者id
//             //     event_timestamp:'',//事件时间戳
//             //     message_id:'',//消息id
//             //     content:'',//文字消息
//             //     video:'',//消息类型
//             //     duration:'',//视频时长
//             //     message_status:'',//消息状态 /0未读 1已读
//             // }
//             // 其它消息按照业务逻辑处理，例如保存到数据库和转发给管理员
//             try {
//                 await mysqlQuery(
//                     'INSERT INTO ws_messages (sender_uuid, receiver_uuid, content, pk) VALUES (?, ?, ?, ?)',
//                     [uuid, '1', content, pk]
//                 );

        


//                 const adminWs = connections.get('1');
//                 if (adminWs && adminWs.readyState === WebSocket.OPEN) {
//                     adminWs.send(JSON.stringify({
//                         type: 'user_message',
//                         from: uuid,
//                         content,
//                         timestamp: new Date()
//                     }));
//                 }
//             } catch (error) {
//                 console.error('消息处理失败:', error);
//             }
//         });

//         // 断开连接时，清理定时器
//         ws.on('close', () => {
//             clearInterval(heartbeatInterval);
//             clearTimeout(pongTimeout);
//             connections.delete(uuid);
//             console.log(`用户 ${uuid} 已断开`);
//         });

//         // 错误处理时，也清理定时器
//         ws.on('error', (error) => {
//             console.error(`用户 ${uuid} 连接错误:`, error);
//             clearInterval(heartbeatInterval);
//             clearTimeout(pongTimeout);
//             connections.delete(uuid);
//         });

//     } catch (err) {
//         console.error('连接初始化异常:', err);
//         ws.close();
//     }
// });

// // 用户验证/自动注册
// async function verifyOrCreateUser(uuid, pk) {
//     try {
//         // 检查用户是否存在
//         const [user] = await mysqlQuery(
//             'SELECT uuid, role FROM ws_users WHERE uuid = ? AND pk = ?',
//             [uuid, pk]
//         );

//         // 不存在则自动创建普通用户
//         if (!user) {
//             await mysqlQuery(
//                 'INSERT INTO ws_users (uuid, pk) VALUES (?, ?)',
//                 [uuid, pk]
//             );
//             return { uuid, role: 'user' };
//         }

//         return user;
//     } catch (error) {
//         return null;
//     }
// }


// async function mysqlQuery(sql, arr) {

//     return new Promise((resolve, reject) => {
//         pool.query(sql, arr, (error, results, fields) => {
//             if (error) {
//                 return reject(error);
//             }
//             resolve(results);
//         });
//     });
// }
// module.exports = server;
